﻿Option Explicit On

Imports CQRSAzure.EventSourcing

Public NotInheritable Class AllIdentityGroup(Of TAggregateIdentifier As IAggregationIdentifier)
    Inherits IdentityGroupBase(Of TAggregateIdentifier)

    ''' <summary>
    ''' Always use the name "All" for the group name of all aggregate identifiers
    ''' </summary>
    ''' <returns></returns>
    Public Overrides ReadOnly Property Name As String
        Get
            Return GROUPNAME_ALL
        End Get
    End Property

    ''' <summary>
    ''' There is no projection for this group as all members are, by definition, in the group
    ''' </summary>
    Public Overrides ReadOnly Property Projection As IProjection
        Get
            Return Nothing
        End Get
    End Property

    Public Overrides Function GetMembers(Optional AsOfDate As Date = #1/1/0001 12:00:00 AM#) As IEnumerable(Of TAggregateIdentifier)
        Throw New NotImplementedException()
        'TODO - work out what aggregate identifiers were in the group as of the given date...?
    End Function

End Class
